home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Environments / PowerMacOberon feb96 / Source / DummyPrinter.Mod (.txt) < prev    next >
Oberon Text  |  1996-01-29  |  3KB  |  76 lines

  1. Syntax10.Scn.Fnt
  2. StampElems
  3. Alloc
  4. 29 Jan 96
  5. MODULE DummyPrinter; (* mah, jt 
  6.     IMPORT
  7.         Macintosh, Sys, Printer, Directories, SYSTEM;
  8.         dpi: LONGINT; printHnd: Sys.TPrHnd; printPort: Sys.GrafPtr; 
  9.     PROCEDURE GetDPI;
  10.         TYPE
  11.             XY=RECORD x, y: INTEGER END;
  12.             GetRsl=RECORD op, err: INTEGER; misc: ARRAY 7 OF INTEGER; cnt: INTEGER; res: ARRAY 27 OF XY END;
  13.             SetRsl=RECORD op, err: INTEGER; dum: LONGINT; hPrint: Sys.TPrHnd; x, y: INTEGER END;
  14.         VAR
  15.             res: XY; getRsl: GetRsl; setRsl: SetRsl; i: INTEGER;
  16.     BEGIN dpi:=0; getRsl.op:=4; Sys.PrGeneral(SYSTEM.ADR(getRsl));
  17.         IF (getRsl.err=0)&(Sys.PrError()=0) THEN i:=0;
  18.             WHILE i < getRsl.cnt DO res:=getRsl.res[i];
  19.                 IF (res.x=res.y)&(res.x > dpi) THEN dpi:=res.y END;
  20.                 INC(i)
  21.             END;
  22.             setRsl.hPrint:=printHnd; setRsl.x:=SHORT(dpi); setRsl.y:=SHORT(dpi); setRsl.op:=5; Sys.PrGeneral(SYSTEM.ADR(setRsl));
  23.             IF (setRsl.err#0)OR(Sys.PrError()#0) THEN dpi:=0 END
  24.         END
  25.     END GetDPI;
  26.     PROCEDURE * Open(VAR name, user: ARRAY OF CHAR; password: LONGINT);
  27.         VAR ph: Sys.TPrRealHnd; pp: Sys.TPrRealPtr; d: Directories.Directory;
  28.     BEGIN Printer.res:=1;
  29.         d := Directories.Current(); 
  30.         Sys.PrOpen;
  31.         IF Sys.PrError()=0 THEN Sys.PrintDefault(printHnd); GetDPI;
  32.             IF dpi#0 THEN
  33.                 IF Sys.PrError()=0 THEN Printer.res:=0;
  34.                     ph:=SYSTEM.VAL (Sys.TPrRealHnd, printHnd);
  35.                     pp:=SYSTEM.VAL (Sys.TPrRealPtr, ph.p);
  36.                     Printer.PageWidth:=SHORT(LONG(pp.right)*300 DIV dpi);
  37.                     Printer.PageHeight:=SHORT(LONG(pp.bottom)*300 DIV dpi)
  38.                 ELSE Sys.PrCloseDoc(printPort); Sys.PrClose END
  39.             ELSE Sys.PrClose END
  40.         ELSE Sys.PrClose END;
  41.         Directories.Change(d.path)
  42.     END Open;
  43.     PROCEDURE * Page(nofcopies: INTEGER);
  44.     END Page;
  45.     PROCEDURE * Close;
  46.     END Close;
  47.     PROCEDURE * UseListFont(VAR name: ARRAY OF CHAR);
  48.     END UseListFont;
  49.     PROCEDURE * ReplConst(x, y, w, h: INTEGER);
  50.     END ReplConst;
  51.     PROCEDURE * ContString(VAR s, fname: ARRAY OF CHAR);
  52.     END ContString;
  53.     PROCEDURE * String(x, y: INTEGER; VAR s, fname: ARRAY OF CHAR);
  54.     END String;
  55.     PROCEDURE * ReplPattern(x, y, w, h, col: INTEGER);
  56.     END ReplPattern;
  57.     PROCEDURE * Picture(x, y, w, h, mode: INTEGER; adr: LONGINT);
  58.     END Picture;
  59.     PROCEDURE * Circle(x0, y0, r: INTEGER);
  60.     END Circle;
  61.     PROCEDURE * Ellipse(x0, y0, a, b: INTEGER);
  62.     END Ellipse;
  63.     PROCEDURE * Line(x0, y0, x1, y1: INTEGER);
  64.     END Line;
  65.     PROCEDURE * Spline(x0, y0, n, open: INTEGER; VAR X, Y: ARRAY OF INTEGER);
  66.     END Spline;
  67.     PROCEDURE Install*;
  68.     BEGIN
  69.         Macintosh.prOpen:=Open; Macintosh.prClose:=Close; Macintosh.prPage:=Page;
  70.         Macintosh.prCircle:=Circle; Macintosh.prEllipse:=Ellipse; Macintosh.prLine:=Line; Macintosh.prSpline:=Spline;
  71.         Macintosh.prPicture:=Picture; Macintosh.prReplConst:=ReplConst; Macintosh.prReplPattern:=ReplPattern;
  72.         Macintosh.prString:=String; Macintosh.prContString:=ContString; Macintosh.prUseListFont:=UseListFont
  73.     END Install;
  74. BEGIN  printHnd:=Sys.NewHandle (120)
  75. END DummyPrinter.
  76.